#pragma once

#include "ICiudad.h"
#include "Cadena.h"
#include "IArbol.h"


class Ciudad : public ICiudad
{
public:
	
	Ciudad(Cadena nombre);

	Cadena ObtenerNombre() const;

	bool operator==(const ICiudad& c) const;

	void AgregarCiudadAdyacente(const Puntero<ICiudad> &city);
	
	Iterador<Puntero<ICiudad>> ObtenerAdyacentes() const;
	
	void ActualizarPromedio(const int &valor);

	int ObtenerPromedio() const;

	int ObtenerCalificaciones() const;

	int ObtenerCantAtracciones() const;

private:

	//Avl para almacenar las ciudades adyacentes
	Puntero<IArbol<Puntero<ICiudad>>> ciudadesAdyacentes;
	
	Cadena nombre;

	int promedioCalificaciones;
	int cantAtracciones;
	int calificaciones;
};
